Stable Diffusion101(贰)

Stable Diffusion 右键菜单详解

ADD NODE Menu:

00AddNoteMenu.png

Utils

Add node >utils

01Utils.png

1. Note: Note节点允许你在ComfyUI的工作区中添加文本注释。

2. Primitive: Primitive节点用于创建和操作基本几何形状,如点、线、矩形、圆形等。这些形状可以作为掩码或控制信息,用于影响图像生成过程。

  • 创建掩码:使用 Primitive 节点创建一个矩形,然后将其连接到 Mask 输入,从而只对图像的特定区域进行处理。

  • ControlNet控制:使用 Primitive 节点创建线条,然后将其连接到 ControlNet 的相应输入,从而引导图像生成特定形状的物体。

  • 例子

    • 使用 Primitive 节点创建一个圆形,然后将其连接到 Inpaint 节点的 Mask 输入,从而只对圆形区域内的图像进行修复。

3. Reroute: Reroute节点用于在ComfyUI工作区中整理节点连接,使流程更加清晰。它可以将节点的输出重新路由到其他位置,避免过多的连线交叉,提高工作区的可读性。

  • 例子
    • 当一个节点的输出需要连接到多个其他节点时,可以使用 Reroute 节点将输出复制到多个位置,避免多条连线交叉。

4. Terminal Log (Manager) : Terminal Log (Manager)节点用于在ComfyUI界面中显示终端输出信息。这对于查看模型加载过程、调试错误、获取运行时信息等非常有用。可以查看模型加载过程中的详细信息,如模型大小、参数数量等。当工作流程出现错误时,可以在终端输出中查看错误信息,帮助定位问题。也可以获取图像生成过程中的实时信息,如采样进度、损失值等。

  • 例子
    • 在加载一个大型模型时,你可以添加一个 Terminal Log (Manager) 节点来查看加载进度和详细信息。

Sampling

Schedulers(调度器)

Add node >Sampling > custom_sampling > schedulers

02Sampling_Scheduler.png

在Stable Diffusion中,调度器控制着图像生成过程中噪声的去除方式。不同的调度器采用不同的策略来逐步降低噪声水平,从而影响生成图像的质量、速度和多样性。

  1. BasicScheduler: 最基础的调度器,采用线性方式逐步降低噪声水平。适用于快速生成图像,或者作为其他调度器的基础。如果想快速生成一张概念草图,可以使用BasicScheduler

  2. KarrasScheduler: 一种改进的调度器,采用非线性方式降低噪声水平,尤其在早期阶段去噪速度较快。适用于生成高质量图像,同时保持一定的生成速度。如果想生成一张细节丰富的图像,但又不想等待太长时间,可以使用KarrasScheduler

  3. ExponentialScheduler: 采用指数方式降低噪声水平,早期去噪速度较慢,后期较快, 适用于生成具有柔和过渡效果的图像。如果想生成一张具有梦幻感的图像,可以使用ExponentialScheduler

  4. PolyexponentialScheduler: 一种基于多项式插值的调度器,可以灵活调整去噪曲线。适用于需要精细控制去噪过程的高级用户。如果想通过调整去噪曲线来实现特定的图像效果,可以使用PolyexponentialScheduler

  5. VPScheduler (Variational Posterior Scheduler): 一种基于变分推理的调度器,理论上可以生成更高质量的图像。适用于追求极致图像质量的用户。如果想生成一张尽可能逼真和精细的图像,可以尝试VPScheduler

  6. BetaSamplingScheduler: 一种基于beta分布的调度器,可以生成多样化的图像。适用于探索不同风格或创意的图像生成。如果想生成一组具有不同风格的图像,可以使用BetaSamplingScheduler

  7. SDTurboScheduler: 一种优化过的调度器,可以在较少的采样步数下生成高质量图像。适用于在保证图像质量的前提下,提高生成速度。如果想快速生成高质量的图像,可以使用SDTurboScheduler

  8. Align YourStepsScheduler & GITSScheduler: 这两种调度器是基于社区开发的算法,旨在进一步提高图像质量和稳定性。适用于追求更高图像质量或尝试新算法的用户。

Samplers

Add node >Sampling >custom_sampling> samplers

03Sampling_Samplers.png

  1. KSamplerSelect: 是一个下拉菜单,可以快速选择常用的采样器,无需手动添加节点。适用于快速切换不同的采样器,尤其是在实验和比较不同采样器效果时非常方便。

    e.g. 如果想尝试使用Euler a采样器,可以直接在KSamplerSelect中选择它,而无需手动添加KSampler节点并设置算法。

    PS: Euler Sampler:

    Euler 采样器

    • 基本算法:Euler 采样器是最基础的采样器,它直接使用 Euler 方法来数值求解扩散模型中的随机微分方程(SDE)。Euler 方法是一种简单的一阶数值求解方法,它通过在每个时间步上使用当前时刻的导数来估计下一时刻的值。

      初始化:从一个随机噪声图像 x_T 开始,设置初始时间步 t = T

      迭代

      • 计算噪声预测:使用 U-Net 模型预测当前时间步 t 的噪声 ϵ_t

      • 更新图像:根据 Euler 方法的公式,更新图像:

        1
        x_{t-1} = x_t - ϵ_t * sqrt(β_t) + sqrt(1 - β_t) * z_t

        其中:

        • β_t 是预先定义的噪声调度参数,控制每个时间步添加的噪声量。
        • z_t 是从标准正态分布中采样的随机噪声。
      • 更新时间步t = t - 1

      终止:当 t = 0 时,停止迭代,输出 x_0 作为生成的图像。

    Euler a(Euler ancestral)采样器

    • 基本算法:Euler a 采样器是 Euler 采样器的改进版本,它引入了祖先采样(ancestral sampling)的概念。祖先采样通过在每一步迭代中添加额外的噪声,来增加生成图像的多样性

      与 Euler 采样器类似,但在更新图像的公式中增加了一个额外的噪声项:

      1
      x_{t-1} = x_t - ϵ_t * sqrt(β_t) + sqrt(1 - β_t) * z_t + σ_t * z'_t

      其中:

      • σ_t 是预先定义的噪声调度参数,控制每个时间步添加的额外噪声量。
      • z'_t 是从标准正态分布中采样的随机噪声。

    Euler Ancestral 采样器

    • 基本算法:Euler Ancestral 采样器与 Euler a 采样器非常相似,它们都使用了祖先采样技术。主要区别在于 Euler Ancestral 采样器在计算噪声预测时,使用了前一个时间步的图像 x_{t-1} 作为输入,而不是当前时间步的图像 x_t

      初始化:从一个随机噪声图像 x_T 开始,设置初始时间步 t = T

      迭代

      • 计算噪声预测:使用 U-Net 模型预测 前一个 时间步 t-1 的噪声 ϵ_{t-1},**输入为 x_t**。

      • 更新图像:根据 Euler 方法的公式,更新图像:

        1
        x_{t-1} = x_t - ϵ_{t-1} * sqrt(β_t) + sqrt(1 - β_t) * z_t + σ_t * z'_t
      • 更新时间步t = t - 1

      终止:当 t = 0 时,停止迭代,输出 x_0 作为生成的图像。

    Euler a 和 Euler Ancestral 最主要的区别就在于:

    • Euler a:在计算当前时间步 t 的噪声预测时,使用 当前时间步 的图像 x_t 作为 U-Net 的输入。
    • Euler Ancestral:在计算当前时间步 t 的噪声预测时,使用 前一个时间步 的图像 x_{t-1} 作为 U-Net 的输入。
    • 当前图像是第一步(即 t = T)时,前一步的图像 x_{t-1} 不存在。在这种情况下,Euler Ancestral 采样器通常会使用当前时间步的图像 x_t 作为 U-Net 的输入,或者使用一个预先定义的噪声图像来代替 x_{t-1}
    • Euler Ancestral 使用前一步的图像作为输入,可以考虑到更多的历史信息,从而可能产生更稳定、更高质量、更多样化的图像。
  2. SamplerEulerAncestral: Euler ancestral采样器,一种基于Euler方法的迭代采样器,引入了祖先采样(ancestral sampling)的概念,可以提高生成图像的质量和稳定性。适用于生成高质量图像,尤其是在处理复杂场景或精细细节时表现较好。如果想生成一张包含丰富细节的风景画,可以使用SamplerEulerAncestral

  3. SamplerEulerAncestralCFG: SamplerEulerAncestral的改进版本,增加了对Classifier-Free Guidance(CFG)的支持,可以更好地控制图像生成的方向和风格。适用于需要更强控制力的图像生成任务,例如在提示词中包含特定风格或元素时。如果想生成一张具有梵高风格的星空图,可以在提示词中加入”梵高风格”,并使用SamplerEulerAncestralCFG来增强风格效果。

  4. SamplerLMS: LMS采样器,一种基于线性多步法(Linear Multistep Method)的采样器,可以在较少的采样步数下生成高质量图像。适用于在保证图像质量的前提下,提高生成速度。如果想快速生成一张高质量的人物肖像,可以使用SamplerLMS

  5. SamplerDPMPP_2M_SDE & SamplerDPMPP_3M_SDE: DPM++ 2M SDE和DPM++ 3M SDE采样器,是基于DPM++算法的采样器,使用了2阶或3阶的随机微分方程求解器,可以在较少的采样步数下生成高质量图像。适用于在保证图像质量的前提下,进一步提高生成速度。如果想在更短的时间内生成高质量的图像,可以尝试使用SamplerDPMPP_2M_SDESamplerDPMPP_3M_SDE

    PS:

    DPM (Denoising Diffusion Probabilistic Models)

    • DPM 是一种基于扩散模型的采样器。它通过迭代地向图像添加噪声,然后学习如何从噪声中恢复出原始图像。在每一步迭代中,DPM 会根据当前的噪声图像和模型预测,计算出下一步需要去除的噪声量。

    DPM++

    • DPM++ 是 DPM 的改进版本,它引入了几种优化技术,包括:
      • 改进的噪声调度:使用更复杂的噪声调度算法,使得模型能够更有效地去除噪声。
      • 预测校正:在每一步迭代中,对模型的预测进行校正,提高预测的准确性。
      • 更快的求解器:使用更高效的数值求解器来计算每一步需要去除的噪声量。
    • 特点:在保持 DPM 较高图像质量的基础上,显著提高了生成速度。

    DPM++ 和 DPM 的区别 :

    速度:DPM++ 比 DPM 快得多,尤其是在生成高分辨率图像时。

        假设我们要生成一张 512x512 像素的风景画。

    • 使用 DPM:可能需要 50 步迭代才能生成一张高质量的图像,耗时较长。
    • **使用 DPM++**:可能只需要 20 步迭代就能生成一张质量相当甚至更好的图像,耗时更短。

    质量:DPM++ 在大多数情况下都能生成与 DPM 相当甚至更好的图像质量。

  6. SamplerDPMPP_SDE: DPM++ SDE采样器,是DPM++算法的另一个变体,使用了随机微分方程求解器,可以在较少的采样步数下生成高质量图像。适用于在保证图像质量的前提下,进一步提高生成速度。

  7. SamplerDPMAdaptive: DPM adaptive采样器,是DPM++算法的自适应版本,可以根据图像内容动态调整采样步数,从而在保证图像质量的同时,进一步提高生成速度。适用于对生成速度有较高要求,同时希望保持图像质量的用户。如果想在尽可能短的时间内生成高质量的图像,可以尝试使用SamplerDPMAdaptive

  8. SamplerLCMUpscale: LCM upscale采样器,专门用于在潜在空间中提高图像的分辨率。适用于先生成低分辨率图像,然后通过LCM upscale提高分辨率,从而在提高图像质量的同时,节省计算资源。如果想生成一张高分辨率的图像,但受限于显存,可以先生成一张低分辨率的图像,然后使用SamplerLCMUpscale将其放大。

    LCM (Latent Consistency Model)

    • LCM 是一种专门用于提高图像分辨率的采样器。它在潜在空间(latent space)中进行操作,通过迭代地向低分辨率图像添加噪声,然后学习如何从噪声中恢复出高分辨率图像。

Sigmas(噪声等级)

Add node >Sampling >custom_sampling> sigmas

04Sampling_Sigmas.png

在Stable Diffusion的扩散模型中,sigmas代表了不同阶段的噪声等级。在图像生成过程中,模型从高噪声等级逐步向低噪声等级迭代,直到生成最终的清晰图像。sigmas子菜单下的节点主要用于控制和操作这些噪声等级。

  1. SplitSigmas
  • 作用:将一个包含所有噪声等级的张量(tensor)分割成多个单独的噪声等级。

    • PS: Tensor:

      在深度学习和数值计算领域,tensor(张量)是一种多维数组。它可以看作是向量和矩阵的推广,可以表示任意维度的数据。

      • 0 维张量:标量(scalar),即一个单独的数字。
      • 1 维张量:向量(vector),即一组有序的数字。
      • 2 维张量:矩阵(matrix),即一个二维数组。
      • 3 维张量:可以看作是一摞矩阵,例如 RGB 彩色图像就可以表示为一个 3 维张量,其中每个通道(R、G、B)都是一个二维矩阵。
      • 更高维张量:可以表示更复杂的数据结构,例如视频(时间维度 + 图像维度)或多通道时间序列数据。
      • Tensor 的优势
        • 统一表示:Tensor 提供了一种统一的方式来表示各种类型的数据,使得模型的输入和输出更加一致,简化了模型的设计和实现。
        • 高效计算:Tensor 可以利用 GPU 进行高效的并行计算,大大加快了模型的训练和推理速度。
        • 灵活操作:Tensor 支持各种数学运算和变换,如加法、乘法、转置、卷积等,为模型的构建和优化提供了丰富的工具。
  • 使用场景:当你需要对不同的噪声等级进行单独处理或分析时,可以使用SplitSigmas节点。

  • 示例:你可以使用SplitSigmas将噪声等级分割后,分别连接到不同的去噪模型,以实现更精细的控制。

  1. SplitSigmasDenoise
  • 作用:类似于SplitSigmas,但它在分割噪声等级的同时,还应用了去噪模型对每个噪声等级进行去噪处理。
  • 使用场景:当你需要在分割噪声等级的同时进行去噪处理时,可以使用SplitSigmasDenoise节点,从而简化流程。
  1. FlipSigmas
  • 作用:将噪声等级的顺序翻转。
  • 使用场景:在某些特殊情况下,你可能需要将噪声等级的顺序翻转,例如在实现某些自定义采样算法时。

Guiders(引导器)

Add node >Sampling >custom_sampling> guiders

05Sampling_Guiders.png

在 Stable Diffusion 中,引导器(Guiders)用于在采样过程中提供额外的指导或约束,从而影响生成图像的特定方面,如构图、颜色、一致性等。

  1. CFG Guider: Classifier-Free Guidance(CFG)引导器,通过调整条件信息(通常是文本提示)的强度来控制图像生成。这是最常用的引导器之一,适用于大多数情况。可以通过调整 CFG Scale 参数来控制提示词对生成图像的影响程度。如果想生成一张更符合提示词描述的图像,可以增加 CFG Scale 的值。

  2. Dual CFG Guider: 双 CFG 引导器,允许你同时使用两个 CFG Scale 值,一个用于正向提示词,一个用于负向提示词。适用于需要更精细地控制正向和负向提示词影响的情况。如果想在生成图像时强调正向提示词,同时弱化负向提示词,可以设置较高的正向 CFG Scale 和较低的负向 CFG Scale。

  3. Basic Guider: 基础引导器,不提供任何额外的指导或约束,直接使用模型的输出。适用于不需要任何引导的简单图像生成任务,或者用于与其他引导器进行比较。

Video Models 下的选项详解

Add node >Sampling >video_models

06VideoModels.png

  1. VideoLinearCFGGuidance
  • 作用:为视频生成任务设计的线性 Classifier-Free Guidance(CFG)引导器。它通过线性调整条件信息(通常是文本提示)的强度来控制视频生成的过程,从而影响生成视频的风格和内容。
  • 使用场景:适用于需要对生成视频进行风格和内容控制的任务,希望以线性方式调整 CFG 强度。
  • 示例:如果你想生成一个逐渐从写实风格过渡到抽象风格的视频,可以使用 VideoLinearCFGGuidance,并在采样过程中线性增加 CFG Scale 的值。
  1. VideoTriangleCFGGuidance
  • 作用:为视频生成任务设计的三角形 CFG 引导器。它通过三角形函数调整条件信息(通常是文本提示)的强度来控制视频生成的过程,从而影响生成视频的风格和内容。
  • 使用场景:适用于需要对生成视频进行风格和内容控制的任务,希望以三角形函数方式调整 CFG 强度。
  • 示例:如果你想生成一个在中间帧具有最强风格效果,而在开始和结束帧风格效果较弱的视频,可以使用 VideoTriangleCFGGuidance

KSampler

  • 作用:虽然KSampler主要用于图像生成,但在视频生成任务中,它也可以用于对每一帧进行采样。
  • 使用场景:当你需要使用KSampler提供的各种采样算法来生成视频的每一帧时,可以使用这个节点。
  • 示例:如果你想使用Euler a算法生成视频的每一帧,可以将KSampler节点连接到视频生成流程中,并设置其算法为Euler a

KSampler (Advanced)

  • 作用:与图像生成类似,KSampler (Advanced)是KSampler的高级版本,提供了更多的参数设置,可以更精细地控制视频采样过程。
  • 使用场景:适用于需要对视频采样过程进行更多调整的高级用户。
  • 示例:如果你想在视频采样过程中动态调整CFG Scale,可以使用KSampler (Advanced),并设置CFG Scale Schedule

Loaders

Add node >loaders

“Loaders” 选项提供了各种加载器节点,用于将模型、图像、文本等数据加载到 ComfyUI 的工作流程中。

07Loaders.png

Load Checkpoint: 加载 Stable Diffusion 的主模型(checkpoint),这是生成图像的基础, 这是任何文生图或图生图工作流程都必不可少的节点。可以用来加载 sd_xl_base_1.0.safetensors 这样的模型文件来生成图像。

Load VAE: 加载变分自编码器(VAE),用于在图像的像素空间和潜在空间之间进行转换。通常与主模型一起使用,有些主模型可能内置了 VAE,有些则需要单独加载。可以用来加载 vae-ft-mse-840000-ema-pruned.ckpt 这样的 VAE 文件。

Load LoRA:加载 LoRA(Low-Rank Adaptation)模型,用于对主模型进行微调,实现风格定制或其他效果。当想要在生成图像时应用特定的风格、主题或其他效果时,可以使用 LoRA。可以用于加载 koreanDollLikeness_v10.safetensors 这样的 LoRA 文件,让生成的图像具有韩国娃娃的风格。

Load ControlNet Model:加载 ControlNet 模型,用于通过额外的控制图像(如边缘图、深度图、姿势图等)来引导图像生成过程。当需要更精确地控制生成图像的构图、姿势、深度等方面时,可以使用 ControlNet。可以用于加载 control_canny-fp16.safetensors 这样的 ControlNet 模型,然后输入一张边缘图,让生成的图像遵循边缘图的轮廓。

**Load ControlNet Model (diff)**:与 Load ControlNet Model 类似,但它加载的是 ControlNet 的差异模型(difference model),可以更有效地利用计算资源。与 Load ControlNet Model 相同,但通常在计算资源有限时使用。

Load Style Model:加载风格模型,用于将特定艺术风格应用到生成的图像上。当你想要生成具有特定艺术风格的图像时,可以使用风格模型。可用于加载 vangogh_style.ckpt 这样的风格模型,让生成的图像具有梵高的风格。

Load CLIP Vision:加载 CLIP 视觉编码器,用于将图像编码为向量表示。主要用于图像相似度计算、图像分类等任务。

unCLIPCheckpointLoader:加载 unCLIP 模型,unCLIP 是一种能够从文本生成图像的模型,与 Stable Diffusion 不同,它不需要 VAE。适用于探索 unCLIP 模型的图像生成能力。

GLIGENLoader:加载 GLIGEN 模型,GLIGEN 是一种能够根据文本和边界框生成图像的模型。适用于需要在指定区域内生成特定物体的图像生成任务。

LoraLoaderModelOnly:仅加载 LoRA 模型的权重,不加载其元数据(metadata)。适用于只需要 LoRA 权重,不需要元数据的情况。

HypernetworkLoader:加载超网络(Hypernetwork)模型,超网络是一种通过修改主模型权重来实现特定效果的模型。适用于实现一些全局性的图像调整或效果。

Load Upscale Model:加载图像超分辨率模型,用于提高图像的分辨率。适用于在生成低分辨率图像后,通过超分辨率模型提高其分辨率

Conditioning

在 Stable Diffusion 中,”Conditioning”(条件)指的是影响图像生成过程的各种因素,最常见的是文本提示词(prompts)。Conditioning 菜单中的节点提供了多种方式来控制和调整这些条件信息,从而实现对生成图像的更精细控制。

08Conditionings.png

Add node >conditioning

style_model:加载风格模型,用于将特定艺术风格迁移到生成的图像上。

controlnet:加载 ControlNet 模型,用于通过额外的控制图像来精确引导图像生成过程。

gilgen:加载 GLIGEN 模型,用于根据文本提示和边界框在图像的指定区域内生成物体。

inpaint:加载 Inpaint 模型,用于修复或替换图像中的指定区域。

upscale_diffusion:加载超分辨率扩散模型,用于提高图像的分辨率。

stable_cascade:加载 Stable Cascade 模型,用于生成高分辨率图像。

instructx/pix2pix:加载 instruct-pix2pix 模型,用于根据文本指令编辑图像。

CLIP Text Encode (Prompt): 这是最基本的 conditioning 节点,它使用 CLIP 模型将文本提示词编码为向量表示,然后将这些向量输入到模型中,引导图像生成过程。输入你希望生成的图像的文本描述。

CLIP Set Last Layer:这个节点允许你修改 CLIP 文本编码器最后一层的输出,从而微调文本提示对图像生成的影响。对 CLIP 编码器有一定了解并希望进行更精细控制的高级用户可以使用这种CLIP。比如可以通过修改最后一层的输出,来强调或弱化提示词中的某些概念。

**Conditioning (Average)**:这个节点将多个 conditioning 向量(通常来自多个 CLIP Text Encode 节点)进行平均,生成一个新的 conditioning 向量。适用于将多个提示词混合在一起,生成融合了多个概念的图像。比如,可以输入两个提示词 “一只猫” 和 “一只狗”,然后使用 Conditioning (Average) 节点将它们的编码向量平均,生成一个新的向量,模型会尝试生成同时具有猫和狗特征的图像。

**Conditioning (Combine)**:这个节点将多个 conditioning 向量组合在一起,但不是简单地平均,而是根据每个向量的权重进行加权平均。适用于对多个提示词的影响程度进行更精细的控制。同样用猫狗为例,输入两个提示词 “一只猫” 和 “一只狗”,并分别设置它们的权重为 0.7 和 0.3,然后使用 Conditioning (Combine) 节点将它们组合,模型会生成一张更偏向于猫的图像。

**Conditioning (Concat)**:将多个 conditioning 向量拼接(concatenate)在一起,形成一个更长的向量。适用于将多个提示词的信息完全保留,而不进行任何混合或加权。比如,可以输入两个提示词 “一只猫” 和 “在窗台上”,然后使用 Conditioning (Concat) 节点将它们拼接,模型会尝试生成一只在窗台上的猫的图像。

**Conditioning (Set Area)**:将不同的 conditioning 向量应用到图像的不同区域。适用于对图像的不同部分进行独立控制。比如将 “蓝天” 应用到图像的上半部分,将 “绿草地” 应用到图像的下半部分。

**Conditioning (Set Area with Percentage)**:类似于 Conditioning (Set Area),但它允许你使用百分比来指定区域的大小,可以更灵活地控制区域划分。

ConditioningSetAreaStrength:用来调整 Conditioning (Set Area)Conditioning (Set Area with Percentage) 节点设置的区域的 conditioning 强度。适用于更精细地控制不同区域的 conditioning 影响程度。

**Conditioning (Set Mask)**:这个节点用来使用掩码(mask)来控制 conditioning 向量的影响区域。适用于对图像的任意形状区域进行控制。例如,可以使用一个圆形掩码,将 “红苹果” 的 conditioning 向量只应用到图像的圆形区域内。

CLIP Vision Encode:这个节点使用 CLIP 视觉编码器将图像编码为向量表示吗,之前在loaders中有提到过。主要用于图像相似度计算、图像分类等任务,也可以用于一些高级的图像生成技巧。

unCLIP Conditioning:这个节点用于 unCLIP 模型的 conditioning,unCLIP 是一种不需要 VAE 就能从文本生成图像的模型。

Latent(潜在空间)

latent 子菜单下的节点主要用于在模型的潜在空间中处理图像。这些节点可以实现图像修复、超分辨率、图像合成等功能。

09Latent.png

inpaint:加载和应用 Inpaint 模型,用于修复或替换图像中的指定区域。

  • 图像修复:去除图像中不需要的物体、瑕疵或水印。
  • 内容替换:将图像中的某个区域替换为新的内容。

在图像上绘制一个掩码,然后使用 Inpaint 模型来修复掩码覆盖的区域,生成没有瑕疵或不需要物体的图像。

batch:批量处理潜在图像。将多张图像的潜在表示输入到 batch 节点,然后将输出连接到其他节点,对多张图像进行相同的操作。比如将多张图像的潜在表示输入到 batch 节点后,将输出连接到 Latent Upscale 节点,可以同时提高多张图像的分辨率。

transform:对潜在图像进行各种变换操作,如旋转、缩放、平移等。比如将潜在图像连接到 transform 节点,设置旋转角度为 45 度,然后解码回像素空间,得到旋转后的图像。

advanced:包含一些高级的潜在空间操作节点,如 LoraLoaderModelOnlyHypernetworkLoader 等。适用于对模型进行微调或应用其他高级技巧。

stable_cascade:加载和应用 Stable Cascade 模型,Stable Cascade 是一种用于生成高分辨率图像的模型。一般用于直接生成高分辨率图像,或者在生成低分辨率图像后进一步提高分辨率的情况。

VAE Decode:将潜在空间表示解码为普通图像。一般用于显示生成结果:将 KSampler 等采样器生成的潜在图像解码为可视化的图像。比如将 KSampler 生成的潜在图像连接到 VAE Decode,在 ComfyUI 界面中预览生成的图像。

VAE Encode:将普通图像编码为潜在空间表示。一般用来以图生图,将参考图像编码为潜在表示,然后输入到 KSampler 等采样器中,引导生成新的图像。比如加载一张照片,将其转换为潜在表示,然后使用 KSampler 生成一张具有相似构图但不同风格的风景画。

Empty Latent Image:创建一个空的潜在图像(latent image),其大小由参数指定。与 InpaintOutpaint 节点结合使用,通过在空白潜在图像上绘制或填充来生成新的图像内容,或作为图像生成的起点,代替从随机噪声开始生成。e.g. 创建一个 512x512 的空白潜在图像,然后使用 Inpaint 节点在其中绘制一个物体,生成包含该物体的图像。

Upscale Latent:在潜在空间中提高图像的分辨率。可以先生成低分辨率图像,然后通过放大来提高分辨率,从而在提高图像质量的同时,节省计算资源。比如将 KSampler 生成的低分辨率潜在图像连接到 Upscale Latent,提高其分辨率,然后再通过 VAE Decode 解码为高分辨率图像。

Upscale Latent By:类似于 Upscale Latent,但它允许你指定放大的倍数。

Latent Composite:将多个潜在图像按照指定的权重和蒙版进行合成。适用于将多个生成的图像或图像的不同部分进行融合。比如将两个 KSampler 生成的潜在图像和对应的掩码连接到 Latent Composite,将它们融合成一张新的图像。

LatentCompositeMasked:与 Latent Composite 类似,但它允许你使用一个额外的掩码来控制合成区域。适用于更精细地控制图像合成的区域。

Image

image 子菜单下的节点主要用于在像素空间中处理图像,包括图像缩放、变换、合成、加载和保存等操作。

10Image.png

upscaling:提高图像分辨率。

Upscale:使用 ESRGAN 等模型对图像进行超分辨率处理。

Latent Upscale:在潜在空间中提高图像的分辨率,通常与 VAE 结合使用。

postprocessing

用于图像后处理的节点,可以在图像生成完成后对其进行进一步的调整和优化。

  • 图像增强:提高图像的清晰度、对比度、饱和度等。
  • 瑕疵修复:去除图像中的噪点、伪影等瑕疵。
  • 风格化:为图像添加艺术滤镜或特殊效果。

比如:GFPGAN:修复图像中的人脸。RealESRGAN:提高图像的真实感和细节。CodeFormer:修复图像中的人脸。

batch:批量处理图像。

preprocessors:包含用于图像预处理的节点,在将图像输入到模型之前对其进行转换或调整。比如 VGG16 Preprocessor:使用 VGG16 模型对图像进行预处理。

transform:对图像进行各种变换操作,如旋转、缩放、平移等。

animation:用于生成动画或视频。

  • 通过插值或其他技术,从多张图像生成动画。
  • 生成视频:将多帧图像组合成视频。
  • e.g. Frame Interpolation:在视频帧之间插入新的帧,使动画更流畅。

Save Image:将生成的图像保存到文件。

Preview Image:在 ComfyUI 界面中预览图像。

Load Image:从文件加载图像。

  • 图生图:加载参考图像,用于引导生成新的图像。
  • 图像编辑:加载需要编辑的图像。

Invert Image:反转图像的颜色。

Batch Images:批量处理图像。

Pad Image for Outpainting:为图像添加填充,以便进行 Outpainting(图像扩展)。

  • Outpainting:即在图像的边界之外生成新的内容来扩展图像。

Empty Image:创建一个空的图像,其大小由参数指定。

  • 作为背景图像,在其上添加其他元素,代替随机噪声成为初始图象。

Image Composite Masked:将多张图像按照指定的权重和蒙版进行合成。适用于将多个生成的图像或图像的不同部分进行融合。和刚刚Latent中的区别在于这个是在像素空间进行操作,接受图像而不是潜在图像作为Input,计算成本比Latent空间中操作要高,但是更加直观和容易控制。

Webcam Capture:从网络摄像头捕获图像。

  • 实时图像生成:将网络摄像头捕获的图像实时输入到模型中,生成新的图像。
  • 交互式应用:创建与用户互动的应用程序,例如虚拟试衣间、实时风格迁移等。

Mask(掩码)

mask 子菜单下的节点主要用于创建、编辑和操作掩码(mask)。掩码本质上是一张灰度图像,其中每个像素的值表示该像素在图像中的透明度或影响程度。掩码可以用于控制图像生成或处理过程中的哪些区域受到影响。

11Mask.png

Compositing:用于合成多个掩码。

  • e.g. Mask Blend:将两个掩码按照指定的混合模式(如叠加、相乘、相减等)进行混合,Mask Composite:将多个掩码按照指定的顺序和操作进行合成。

**Load Image (as Mask)**:将加载的图像作为掩码使用。例如从文件加载一张灰度图像作为掩码,或加载一张带有 Alpha 通道的图像,将其 Alpha 通道作为掩码。

e.g. 加载一张黑白图像,其中黑色区域表示不透明,白色区域表示透明,然后将这张图像作为掩码用于 Inpainting。

Convert Mask to Image:将掩码转换为普通图像。预览掩码,将掩码转换为图像,以便在 ComfyUI 界面中查看其效果。保存掩码,将掩码保存为图像文件,以便在其他软件中使用。

Convert Image to Mask:将普通图像转换为掩码。将一张灰度图像或带有 Alpha 通道的图像转换为掩码,之后用于 Inpainting。

Image Color To Mask:根据图像中的颜色范围创建掩码。一般是根据颜色范围从图像中提取掩码,用于对特定颜色区域进行操作。比如从一张风景照片中提取天空区域的掩码,然后对天空进行单独处理。

Solid Color Mask:创建一个纯色掩码。快速创建一个矩形、圆形或其他形状的纯色掩码。

比如创建一个黑色矩形掩码,用于 Inpainting 填充图像中的某个区域。

Invert Mask:反转掩码的透明度。将掩码的透明区域和不透明区域互换。e.g. 将一个圆形掩码反转,使圆形区域外的部分变为不透明。

Feather Mask:对掩码的边缘进行羽化(模糊)处理,使其过渡更加平滑,避免硬边缘,即在图像合成或 Inpainting 中避免出现明显的边缘。

e.g. 对一个圆形掩码进行羽化处理,使圆形边缘与周围区域自然过渡。

Grow Mask:将掩码的不透明区域向外扩展指定的像素数。扩大掩码的影响范围。

Threshold Mask:根据像素值的阈值将图像转换为二值掩码。根据亮度或其他特征,从图像中提取掩码。比如将一张灰度图像转换为二值掩码,其中亮度高于阈值的像素变为不透明,其他像素变为透明。